#include<vector>
#include<string>
#include<iostream>
#include "cutword.h"
#include<algorithm>

using namespace std;

int main(){
	cout<<"开始"<<endl;
	string path = "test.txt";
	// 用自定义读取函数，按行存在vector里面；
	vector<string> res =  readfile(path);
	// 声明一个默认的字符串动态数组，用来存储切分后的元素；
	vector<string> token;
	// 遍历处理每一个字符串，这种好处是可以跳过过短的行，加一个判断就能实现
	for(auto str:res){
		// if(str.size()>10) xxx 
		Tokenizer(str,token,",.",false); // 简单的切词函数实现是利用字符串自带的 ‘find_first_of()’和‘find_first_not_of()’实现的；
	}
	// 这里是STL里面的算法函数：for_each，还有 lambda 表达式
	for_each(token.begin(),token.end(),[](string s){cout<<s<<":";});
	cout<<endl;
	cout<<"——————————————"<<endl;
	// 因为只是返回值类型不同是不能重载的，所以这里定义了一个内部实现基本类似，但是返回 string 类型的，这个相对来说内部粒度不好控制；
	string str1 = readString(path);
	token.clear(); // 清空原有切分数组;
	Tokenizer(str1,token,",.",false);
	for_each(token.begin(),token.end(),[](string s){cout<<s<<"-";});
	cout<<endl;
	cout<<"——————————————"<<endl;
	token.clear();
	// 这里继续使用扩展，加入空格切词；
	Tokenizer(str1,token,",. ",false);
	for_each(token.begin(),token.end(),[](string s){cout<<s<<"*";});
	cout<<"演示结束"<<endl;
	return 0;


}
